package main

// 1640. 能否连接形成数组
// 给你一个整数数组 arr ，数组中的每个整数 互不相同 。
// 另有一个由整数数组构成的数组 pieces，其中的整数也 互不相同 。
// 请你以 任意顺序 连接 pieces 中的数组以形成 arr 。
// 但是，不允许 对每个数组 pieces[i] 中的整数重新排序。

// 如果可以连接 pieces 中的数组形成 arr ，返回 true ；否则，返回 false

// pieces 作为二维数组，每个子数组不能改变

func canFormArray(arr []int, pieces [][]int) bool {
	m := make(map[int][]int)
	for _, v := range pieces {
		m[v[0]] = v
	}
	// 遍历arr
	for i := 0; i < len(arr); {
		if a, ok := m[arr[i]]; !ok {
			return false
		} else {
			// a 是数组
			for j := 0; j < len(a); i, j = i+1, j+1 {
				if arr[i] != a[j] {
					return false
				}
			}
		}

	}
	return true
}
